Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Programming style</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Programming_style"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Programming_style rootpage-Programming_style skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Programming style</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */


.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style>
<p><b>Programming style</b>, also known as <b>coding style</b>, are the conventions and patterns used in writing <a href="Source_code" title="Source code">source code</a>, resulting in a consistent and readable <a href="Codebase" title="Codebase">codebase</a>. These conventions often encompass aspects such as <a href="Indentation_style" title="Indentation style">indentation</a>, <a href="Naming_convention_(programming)" title="Naming convention (programming)">naming conventions</a>, <a href="Capitalization" title="Capitalization">capitalization</a>, and <a href="Comment_(computer_programming)" title="Comment (computer programming)">comments</a>. Consistent programming style is generally considered beneficial for <a href="Code_readability" class="mw-redirect" title="Code readability">code readability</a> and <a href="Maintainability" title="Maintainability">maintainability</a>, particularly in collaborative environments.
</p><p>Maintaining a consistent style across a codebase can improve readability and ease of software maintenance. It allows developers to quickly understand code written by others and reduces the likelihood of errors during modifications. Adhering to standardized coding guidelines ensures that teams follow a uniform approach, making the codebase easier to manage and scale. Many organizations and <a href="Open_source" title="Open source">open-source</a> projects adopt specific coding standards to facilitate collaboration and reduce cognitive load.
</p><p>Style guidelines can be formalized in documents known as <b>coding conventions</b>, which dictate specific formatting and naming rules. These conventions may be prescribed by official standards for a programming language or developed internally within a team or project. For example, <a href="Python_(programming_language)" title="Python (programming language)">Python</a>'s <a href="PEP_8" class="mw-redirect" title="PEP 8">PEP 8</a> is a widely recognized style guide that outlines best practices for writing Python code. In contrast, languages like <a href="C_(programming_language)" title="C (programming language)">C</a> or <a href="Java_(programming_language)" title="Java (programming language)">Java</a> may have industry standards that are either formally documented or adhered to by convention.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Automation">Automation</h2></div>
<p>Adherence to coding style can be enforced through automated tools, which format code according to predefined guidelines. These tools reduce the manual effort required to maintain style consistency, allowing programmers to focus on logic and functionality. For instance, tools such as <code>Black</code> for Python and <code>clang-format</code> for C++ automatically reformat code to comply with specified coding standards.
</p>
<div class="mw-heading mw-heading2"><h2 id="Style_guidelines">Style guidelines</h2></div>
<p>Common elements of coding style include:
</p>
<ul><li><i>Indentation and <a href="Whitespace_character" title="Whitespace character">whitespace character</a> use</i> – Ensures consistent block structures and improves readability.</li>
<li><i>Naming conventions</i> – Standardizes how <a href="Variable_(computer_science)" title="Variable (computer science)">variables</a>, <a href="Function_(computer_programming)" title="Function (computer programming)">functions</a>, and <a href="Class_(computer_programming)" title="Class (computer programming)">classes</a> are named, typically adhering to <a href="Camel_case" title="Camel case">camelCase</a>, <a href="Snake_case" title="Snake case">snake case</a>, or <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a>Case, depending on the language.</li>
<li><i>Capitalization</i> – Dictates whether keywords and identifiers are capitalized or lowercase, in line with language syntax.</li>
<li><i>Comment use</i> – Provides context and explanations within code without affecting its execution.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Indentation">Indentation</h3></div>
<p>Indentation style can assist a reader in various ways including: identifying control flow and blocks of code. In some programming languages, indentation is used to <a href="Off-side_rule" title="Off-side rule">delimit blocks of code</a> and therefore is not matter of style. In languages that ignore whitespace, indentation can affect readability.
</p><p>For example, formatted in a commonly used style:
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">hours</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">24</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">minutes</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">60</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">seconds</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">60</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<p>Arguably, poorly formatted:
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">hours</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">24</span>
<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">minutes</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">60</span>
<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">seconds</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">60</span>
<span class="p">)</span>
<span class="p">{</span><span class="k">return</span><span class="w"> </span><span class="nb">true</span>
<span class="p">;}</span><span class="w"> </span><span class="k">else</span>
<span class="p">{</span><span class="k">return</span><span class="w"> </span><span class="nb">false</span>
<span class="p">;}</span>
</pre></div>
<div class="mw-heading mw-heading4"><h4 id="Notable_indenting_styles">Notable indenting styles</h4></div>
<div class="mw-heading mw-heading5"><h5 id="ModuLiq">ModuLiq</h5></div>
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}


/* end https://en.wikipedia.org/ */
</style>
<p>The <b>ModuLiq</b> Zero Indentation Style groups by empty line rather than indenting.
</p><p>Example:
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">hours</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">24</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">minutes</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">60</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">seconds</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">60</span><span class="p">)</span>
<span class="k">return</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>

<span class="k">else</span>
<span class="k">return</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>
</pre></div>
<div class="mw-heading mw-heading5"><h5 id="Lua">Lua</h5></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Lua" title="Lua">Lua</a></div>
<p><b>Lua</b> does not use the traditional <a href="Curly_braces" class="mw-redirect" title="Curly braces">curly braces</a> or <a href="Parentheses" class="mw-redirect" title="Parentheses">parentheses</a>; rather, the expression in a conditional statement must be followed by <code>then</code>, and the block must be closed with <code>end</code>.
</p>
<div class="mw-highlight mw-highlight-lang-lua mw-content-ltr" dir="ltr"><pre><span class="kr">if</span><span class="w"> </span><span class="nv">hours</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">24</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="nv">minutes</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">60</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="nv">seconds</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">60</span><span class="w"> </span><span class="kr">then</span>
<span class="w"> </span><span class="kr">return</span><span class="w"> </span><span class="kc">true</span>
<span class="kr">else</span>
<span class="w"> </span><span class="kr">return</span><span class="w"> </span><span class="kc">false</span>
<span class="kr">end</span>
</pre></div>
<p>Indenting is optional in Lua. <code>and</code>, <code>or</code>, and <code>not</code> function as logical operators.
</p>
<div class="mw-heading mw-heading5"><h5 id="Python">Python</h5></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Python_(programming_language)" title="Python (programming language)">Python (programming language)</a></div>
<p><b>Python</b> relies on the <i><a href="Off-side_rule" title="Off-side rule">off-side rule</a></i>, using indenting to indicate and implement control structure, thus eliminating the need for bracketing (i.e., <code>{</code> and <code>}</code>). However, copying and pasting indented code can cause problems, because the indent level of the pasted code may not be the same as the indent level of the target line. Such reformatting by hand is tedious and error prone, but some <a href="Text_editor" title="Text editor">text editors</a> and <a href="Integrated_development_environment" title="Integrated development environment">integrated development environments</a> (IDEs) have features to do it automatically. There are also problems when indented code is rendered unusable when posted on a forum or web page that removes whitespace, though this problem can be avoided where it is possible to enclose code in whitespace-preserving tags such as "&lt;pre&gt; ... &lt;/pre&gt;" (for <a href="HTML" title="HTML">HTML</a>), "[code]" ... "[/code]" (for <a href="Bbcode" class="mw-redirect" title="Bbcode">bbcode</a>), etc.
</p>
<div class="mw-highlight mw-highlight-lang-python mw-content-ltr" dir="ltr"><pre><span class="k">if</span> <span class="n">hours</span> <span class="o">&lt;</span> <span class="mi">24</span> <span class="ow">and</span> <span class="n">minutes</span> <span class="o">&lt;</span> <span class="mi">60</span> <span class="ow">and</span> <span class="n">seconds</span> <span class="o">&lt;</span> <span class="mi">60</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">False</span>
</pre></div>
<p>Python starts a block with a colon (<code>:</code>).
</p><p>Python programmers tend to follow a commonly agreed style guide known as PEP8.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> There are tools designed to automate PEP8 compliance.
</p>
<div class="mw-heading mw-heading5"><h5 id="Haskell">Haskell</h5></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Haskell" title="Haskell">Haskell</a></div>
<p><b>Haskell</b>, like Python, has the <i>off-side rule</i>. It has a two-dimension syntax where indenting is meaningful to define blocks (although, an alternate syntax uses curly braces and semicolons).
</p><p>Haskell is a declarative language, there are statements, but declarations within a Haskell script.
</p><p>Example:
</p>
<div class="mw-highlight mw-highlight-lang-haskell mw-content-ltr" dir="ltr"><pre><span class="kr">let</span><span class="w"> </span><span class="n">c_1</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="mi">1</span>
<span class="w"> </span><span class="n">c_2</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="mi">2</span>
<span class="kr">in</span>
<span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="n">c_1</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">c_2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">y</span>
</pre></div>
<p>may be written in one line as:
</p>
<div class="mw-highlight mw-highlight-lang-haskell mw-content-ltr" dir="ltr"><pre><span class="kr">let</span><span class="w"> </span><span class="p">{</span><span class="n">c_1</span><span class="ow">=</span><span class="mi">1</span><span class="p">;</span><span class="n">c_2</span><span class="ow">=</span><span class="mi">2</span><span class="p">}</span><span class="w"> </span>
<span class="kr">in</span><span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="n">c_1</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">c_2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">y</span>
</pre></div>
<p>Haskell encourages the use of <a href="Literate_programming" title="Literate programming">literate programming</a>, where extended text explains the genesis of the code. In literate Haskell scripts (named with the <code>lhs</code> extension), everything is a comment except blocks marked as code. The program can be written in <a href="LaTeX" title="LaTeX">LaTeX</a>, in such case the <code>code</code> environment marks what is code. Also, each active code paragraph can be marked by preceding and ending it with an empty line, and starting each line of code with a greater than sign and a space. Here an example using LaTeX markup:
</p>
<div class="mw-highlight mw-highlight-lang-haskell mw-content-ltr" dir="ltr"><pre><span class="kt">The</span><span class="w"> </span><span class="n">function</span><span class="w"> </span><span class="nf">\</span><span class="n">verb</span><span class="o">+</span><span class="n">isValidDate</span><span class="o">+</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="kr">if</span><span class="w"> </span><span class="n">date</span><span class="w"> </span><span class="n">is</span><span class="w"> </span><span class="n">valid</span>
<span class="nf">\</span><span class="n">begin</span><span class="p">{</span><span class="n">code</span><span class="p">}</span>
<span class="nf">isValidDate</span><span class="w"> </span><span class="ow">::</span><span class="w"> </span><span class="kt">Date</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="kt">Bool</span>
<span class="nf">isValidDate</span><span class="w"> </span><span class="n">date</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="n">hh</span><span class="o">&gt;=</span><span class="mi">0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">mm</span><span class="o">&gt;=</span><span class="mi">0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">ss</span><span class="o">&gt;=</span><span class="mi">0</span>
<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">hh</span><span class="o">&lt;</span><span class="mi">24</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">mm</span><span class="o">&lt;</span><span class="mi">60</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">ss</span><span class="o">&lt;</span><span class="mi">60</span>
<span class="w"> </span><span class="kr">where</span><span class="w"> </span><span class="p">(</span><span class="n">hh</span><span class="p">,</span><span class="n">mm</span><span class="p">,</span><span class="n">ss</span><span class="p">)</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="n">fromDate</span><span class="w"> </span><span class="n">date</span>
<span class="nf">\</span><span class="n">end</span><span class="p">{</span><span class="n">code</span><span class="p">}</span>
<span class="nf">observe</span><span class="w"> </span><span class="n">that</span><span class="w"> </span><span class="kr">in</span><span class="w"> </span><span class="n">this</span><span class="w"> </span><span class="kr">case</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">overloaded</span><span class="w"> </span><span class="n">function</span><span class="w"> </span><span class="n">is</span><span class="w"> </span><span class="nf">\</span><span class="n">verb</span><span class="o">+</span><span class="n">fromDate</span><span class="w"> </span><span class="ow">::</span><span class="w"> </span><span class="kt">Date</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="p">(</span><span class="kt">Int</span><span class="p">,</span><span class="kt">Int</span><span class="p">,</span><span class="kt">Int</span><span class="p">)</span><span class="o">+.</span>
</pre></div>
<p>And an example using plain text:
</p>
<div class="mw-highlight mw-highlight-lang-haskell mw-content-ltr" dir="ltr"><pre><span class="kt">The</span><span class="w"> </span><span class="n">function</span><span class="w"> </span><span class="n">isValidDate</span><span class="w"> </span><span class="n">test</span><span class="w"> </span><span class="kr">if</span><span class="w"> </span><span class="n">date</span><span class="w"> </span><span class="n">is</span><span class="w"> </span><span class="n">valid</span>

<span class="o">&gt;</span><span class="w"> </span><span class="n">isValidDate</span><span class="w"> </span><span class="ow">::</span><span class="w"> </span><span class="kt">Date</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="kt">Bool</span>
<span class="o">&gt;</span><span class="w"> </span><span class="n">isValidDate</span><span class="w"> </span><span class="n">date</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="n">hh</span><span class="o">&gt;=</span><span class="mi">0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">mm</span><span class="o">&gt;=</span><span class="mi">0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">ss</span><span class="o">&gt;=</span><span class="mi">0</span>
<span class="o">&gt;</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">hh</span><span class="o">&lt;</span><span class="mi">24</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">mm</span><span class="o">&lt;</span><span class="mi">60</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">ss</span><span class="o">&lt;</span><span class="mi">60</span>
<span class="o">&gt;</span><span class="w"> </span><span class="kr">where</span><span class="w"> </span><span class="p">(</span><span class="n">hh</span><span class="p">,</span><span class="n">mm</span><span class="p">,</span><span class="n">ss</span><span class="p">)</span><span class="w"> </span><span class="ow">=</span><span class="w"> </span><span class="n">fromDate</span><span class="w"> </span><span class="n">date</span>

<span class="nf">observe</span><span class="w"> </span><span class="n">that</span><span class="w"> </span><span class="kr">in</span><span class="w"> </span><span class="n">this</span><span class="w"> </span><span class="kr">case</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">overloaded</span><span class="w"> </span><span class="n">function</span><span class="w"> </span><span class="n">is</span><span class="w"> </span><span class="n">fromDate</span><span class="w"> </span><span class="ow">::</span><span class="w"> </span><span class="kt">Date</span><span class="w"> </span><span class="ow">-&gt;</span><span class="w"> </span><span class="p">(</span><span class="kt">Int</span><span class="p">,</span><span class="kt">Int</span><span class="p">,</span><span class="kt">Int</span><span class="p">)</span><span class="o">.</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Vertical_alignment">Vertical alignment</h3></div>
<p>Some programmers consider it valuable to align similar elements vertically (as tabular, in columns), citing that it can make typo-generated bugs more obvious.
</p><p>For example, unaligned:
</p>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span class="nv">$search</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">,</span> <span class="s1">'d'</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">);</span>
<span class="nv">$replacement</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">'foo'</span><span class="p">,</span> <span class="s1">'bar'</span><span class="p">,</span> <span class="s1">'baz'</span><span class="p">,</span> <span class="s1">'quux'</span><span class="p">);</span>

<span class="nv">$value</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nv">$anothervalue</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="nv">$yetanothervalue</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
</pre></div>
<p>aligned:
</p>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span class="nv">$search</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">,</span> <span class="s1">'d'</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">);</span>
<span class="nv">$replacement</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">'foo'</span><span class="p">,</span> <span class="s1">'bar'</span><span class="p">,</span> <span class="s1">'baz'</span><span class="p">,</span> <span class="s1">'quux'</span><span class="p">);</span>

<span class="nv">$value</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nv">$anothervalue</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="nv">$yetanothervalue</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
</pre></div>
<p>Unlike the unaligned code, the aligned code implies that the search and replace values are related since they have corresponding elements. As there is one more value for search than replacement, if this is a bug, it is more likely to be spotted via visual inspection.
</p><p>Cited disadvantages of vertical alignment include:
</p>
<ul><li>Dependencies across lines which leads to maintenance load. For example, if a long column value is added that requires a wider column, then all lines of the table must be modified (to maintain the tabular form) which is a larger change which leads to more effort to review and to understand the change at a later date</li>
<li>Brittleness: if a programmer does not correctly format the table when making a change, the result is a visual mess that is harder to read than unaligned code. Simple refactoring operations, such as renaming, can break the formatting.</li>
<li>More effort to maintain which may discourage a programmer from making a beneficial change, such as improving the name of an identifier, because doing so would require significant formatting effort</li>
<li>Requirement to use a fixed-width fonts; not proportional fonts</li></ul>
<p>Maintaining alignment can be alleviated by a tool that provides support (i.e. for <a href="Elastic_tabstop" class="mw-redirect" title="Elastic tabstop">elastic tabstops</a>), although that creates a reliance on such tools.
</p><p>As an example, simple refactoring operations to rename "$replacement" to "$r" and "$anothervalue" to "$a" results in:
</p>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span class="nv">$search</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">,</span> <span class="s1">'d'</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">);</span>
<span class="nv">$r</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">'foo'</span><span class="p">,</span> <span class="s1">'bar'</span><span class="p">,</span> <span class="s1">'baz'</span><span class="p">,</span> <span class="s1">'quux'</span><span class="p">);</span>

<span class="nv">$value</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nv">$a</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="nv">$yetanothervalue</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
</pre></div>
<p>With unaligned formatting, these changes do not have such a dramatic, inconsistent or undesirable effect:
</p>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span class="nv">$search</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">,</span> <span class="s1">'d'</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">);</span>
<span class="nv">$r</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">'foo'</span><span class="p">,</span> <span class="s1">'bar'</span><span class="p">,</span> <span class="s1">'baz'</span><span class="p">,</span> <span class="s1">'quux'</span><span class="p">);</span>

<span class="nv">$value</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nv">$a</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="nv">$yetanothervalue</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Whitespace">Whitespace</h3></div>
<p>A <a href="Free-format_language" class="mw-redirect" title="Free-format language">free-format language</a> ignores <a href="Whitespace_character" title="Whitespace character">whitespace characters</a>: spaces, tabs and new lines so the programmer is free to style the code in different ways without affecting the meaning of the code. Generally, the programmer uses style that is considered to enhance <a href="Readability" title="Readability">readability</a>.
</p><p>The two code snippets below are the same logically, but differ in whitespace.
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="p">;</span>
<span class="k">for</span><span class="p">(</span><span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="n">i</span><span class="o">&lt;</span><span class="mi">10</span><span class="p">;</span><span class="o">++</span><span class="n">i</span><span class="p">){</span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span><span class="n">i</span><span class="o">*</span><span class="n">i</span><span class="o">+</span><span class="n">i</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
<p>versus
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="p">;</span>
<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">"%d"</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">i</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
<p>The use of <a href="Tab_key" title="Tab key">tabs</a> for whitespace is debatable. Alignment issues arise due to differing tab stops in different environments and mixed use of tabs and spaces.
</p><p>As an example, one programmer prefers <a href="Tab_stop" title="Tab stop">tab stops</a> of four and has their toolset configured this way, and uses these to format their code.
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="kt">int</span><span class="w"> </span><span class="n">ix</span><span class="p">;</span><span class="w"> </span><span class="c1">// Index to scan array</span>
<span class="kt">long</span><span class="w"> </span><span class="n">sum</span><span class="p">;</span><span class="w"> </span><span class="c1">// Accumulator for sum</span>
</pre></div>
<p>Another programmer prefers tab stops of eight, and their toolset is configured this way. When someone else examines the original person's code, they may well find it difficult to read.
</p>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span class="kt">int</span><span class="w"> </span><span class="n">ix</span><span class="p">;</span><span class="w"> </span><span class="c1">// Index to scan array</span>
<span class="kt">long</span><span class="w"> </span><span class="n">sum</span><span class="p">;</span><span class="w"> </span><span class="c1">// Accumulator for sum</span>
</pre></div>
<p>One widely used solution to this issue may involve forbidding the use of tabs for alignment or rules on how tab stops must be set. Note that tabs work fine provided they are used consistently, restricted to logical indentation, and not used for alignment:
</p>
<div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span class="k">class</span><span class="w"> </span><span class="nc">MyClass</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">foobar</span><span class="p">(</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">qux</span><span class="p">,</span><span class="w"> </span><span class="c1">// first parameter</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">quux</span><span class="p">);</span><span class="w"> </span><span class="c1">// second parameter</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">foobar2</span><span class="p">(</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">qux</span><span class="p">,</span><span class="w"> </span><span class="c1">// first parameter</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">quux</span><span class="p">,</span><span class="w"> </span><span class="c1">// second parameter</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">quuux</span><span class="p">);</span><span class="w"> </span><span class="c1">// third parameter</span>
<span class="p">};</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="MISRA_C" title="MISRA C">MISRA C</a>&nbsp;– Software development standard for the C programming language</li>
<li><a href="Naming_convention_(programming)" title="Naming convention (programming)">Naming convention (programming)</a>&nbsp;– Set of rules for naming entities in source code and documentation</li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.python.org/dev/peps/pep-0008/">"PEP 0008: Style Guide for Python Code"</a>. python.org.</cite></span>
</li>
</ol></div></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-08-06" href="https://en.wikipedia.org/wiki/?title=Programming_style&amp;oldid=1304523975">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>